<?php
namespace Swocloud\Config;

class Config  
{
    protected $configArray = [];

    // 加载配置文件路径
    protected $configPath = '';

    public function __construct()
    {
        // 设置配置路径
        $this->configPath = app()->getBasePath() . '/config';

        // 读取配置
        $this->phpParser();
    }

    /**
     * 读取config配置文件
     * @return void 
     */
    protected function phpParser()
    {
        $files = scandir($this->configPath);

        // 读取文件信息
        foreach ($files as $file) {
            if ($file === '.' || $file === '..') {
                continue;
            }

            // 第三个参数设置为true，返回查找字符串第一次出现之前的字符串
            $filename = stristr($file, '.php', true);

            $this->configArray[$filename] = include $this->configPath . '/' . $file;
        }
    }

    /**
     * 获取配置   key.key1.key2
     * @param mixed|null $key 
     * @return array|mixed 
     */
    public function get($key = null)
    {
        if (empty($key)) {
            return $this->configArray;
        }

        // 将所有配置赋值-将键名改成小写
        $data = array_change_key_case($this->configArray, CASE_LOWER);

        $keysArray = explode('.', strtolower($key));

        foreach ($keysArray as $value) {

            if (!isset($data[$value])) {
                $data = null;
                break;               
            }

            // 每一级遍历后，将data赋值为当前标识数组
            $data = $data[$value];
        }

        return $data;
    }

}
